﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GraphGeneric
{
	public interface IGraphOld<TValue, TWeight>
	{
        IEnumerable<INodeOld<TValue, TWeight>> AllVertices { get; }
        INodeOld<TValue, TWeight> GetVertex(TValue value);
		IEnumerable<IEdgeOld<TValue, TWeight>> GetEdges(TValue value);
        //IEdge<TNodeValue, TEdgeWeight> GetEdge(INode<TNodeValue, TEdgeWeight> node1, INode<TNodeValue, TEdgeWeight> node2);
		void AddVertex(TValue value);
		void AddEdge(TValue from, TValue to, TWeight weight, bool isDirected);
	}
	public interface INodeOld<TValue, TWeight>
	{
		TValue Value { get; }
        IEnumerable<INodeOld<TValue, TWeight>> AdjacentNodes { get; }
        bool AddAdjacentNode(INodeOld<TValue, TWeight> vertex);
	}
	public interface IEdgeOld<TValue, TWeight>
	{
        INodeOld<TValue, TWeight> Vertex1 { get; }
        INodeOld<TValue, TWeight> Vertex2 { get; }
		TWeight Weight { get; }
		bool IsDirected { get; }
	}
}
